#ifndef NAVIGATIONMANAGER_H_
#define NAVIGATIONMANAGER_H_

#include <FUi.h>
#include <FBase.h>
#include <FApp.h>
#include "Opennav.h"
#include "BadaFile.h"
#include "MainMenuForm.h"
#include "MapForm.h"
#include "CountryForm.h"
#include "CityForm.h"
#include "RoadForm.h"
#include "OpennavMap.h"

class NavigationManager :
	public Osp::Ui::Controls::Form
{
public:
	NavigationManager();
	virtual ~NavigationManager();

public:
	static const Osp::Base::String FORM_MANAGER_NAME;
	static const RequestId REQUEST_ID_MAINMENU_FORM = 100;
	static const RequestId REQUEST_ID_MAP_FORM = 101;
	static const RequestId REQUEST_ID_COUNTRY_FORM = 110;
	static const RequestId REQUEST_ID_CITY_FORM = 111;
	static const RequestId REQUEST_ID_ROAD_FORM = 112;

	static const RequestId REQUEST_ID_ADDRESS_COUNTRY = 200;
	static const RequestId REQUEST_ID_ADDRESS_CITY_BY_COUNTRY = 201;
	static const RequestId REQUEST_ID_ADDRESS_STREET_BY_CITY = 202;
	static const RequestId REQUEST_ID_ADDRESS_JUNCTION_BY_STREET = 203;

public:
	result Construct();

public:
	virtual result OnInitializing();
	virtual void OnUserEventReceivedN(RequestId requestId, Osp::Base::Collection::IList* pArgs);

protected:
	MainMenuForm* __pMainMenuForm;
	MapForm* __pMapForm;
	CountryForm* __pCountryForm;
	CityForm* __pCityForm;
	RoadForm* __pRoadForm;

	BadaFile* __pMapFile;
	OpennavMap* __pMap;
	OpennavSearchServiceProvider* __pSearchServiceProvider;
};

#endif /* NAVIGATIONMANAGER_H_ */
